package com.example.interfaces.exchange_confirm_01;

import com.example.mq.MyCallBack;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.connection.CorrelationData;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.PostConstruct;

/**
 * ClassName: Product
 * author: bob.ly
 * Version: 1.0.0
 * DateTime: 2021/07/26-22:17:00
 * Description:
 */
//@RestController
//@RequestMapping("/confirm")
//@Slf4j
//public class Product {
//    private static final String CONFIRM_EXCHANGE_NAME = "confirm.exchange";
//    @Autowired
//    private RabbitTemplate rabbitTemplate;
//
//    @Autowired
//    private MyCallBack myCallBack;
//
//    /**
//     * 依赖注入rabbitTemplate之后,再设置他的回调对象
//     */
//    @PostConstruct
//    public void init() {
//        rabbitTemplate.setConfirmCallback(myCallBack);
//    }
//
//    /**
//     * 那么问题来了, 当前只接受到了key1路由的消息, key2路由的消息直接丢弃掉, 作为生产者我怎么知道我的消息是被丢失了呢?
//     *
//     * @param message
//     */
//    @GetMapping("/sendMessage/{message}")
//    public void sendMessage(@PathVariable("message") String message) {
//        CorrelationData correlationData1 = new CorrelationData("1");
//        rabbitTemplate.convertAndSend(CONFIRM_EXCHANGE_NAME,
//                "key1",
//                message + "key1",
//                correlationData1);
//
//        /**
//         * 两者的rountingKey不同,一个是真实绑定的, 一个是手动添加的
//         */
//        CorrelationData correlationData2 = new CorrelationData("2");
//        rabbitTemplate.convertAndSend(CONFIRM_EXCHANGE_NAME,
//                "key2",
//                message + "key2",
//                correlationData2);
//        log.info("发送消息内容:{}", message);
//    }
//}
